home *** CD-ROM | disk | FTP | other *** search
/ Borland JBuilder 6 / jbuilder6.iso / IBM VisualAge for Java Enterprise v4.0 Retail / ivj40 / setup / IDE.Cab / F87890_MethodModel.class (.txt) < prev    next >
Encoding:
Java Class File  |  2001-03-22  |  3.3 KB  |  141 lines

  1. package com.ibm.ivj.testpilot.model;
  2.  
  3. import com.ibm.ivj.testpilot.utils.MemberUtils;
  4. import java.lang.reflect.Method;
  5. import java.lang.reflect.Modifier;
  6.  
  7. public class MethodModel extends ExecutableModel {
  8.    private static String copyright = "Licensed Material - Property of IBM IBM(R) VisualAge(R) for Java(TM), Version 3.5 (C) Copyright IBM Corp. 1997, 2000- All Rights Reserved. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.";
  9.    private Method method = null;
  10.    private String methodName = null;
  11.    private Class type = null;
  12.    private MemberModel[] members = null;
  13.    private MemberModel[] conciseMembers = null;
  14.    private MemberModel detailsMember = null;
  15.    private ArgumentSet argumentSet = null;
  16.    // $FF: synthetic field
  17.    static Class class$0;
  18.  
  19.    public MethodModel(MemberModel var1, Method var2) {
  20.       super(var1);
  21.       this.initializeMethod(var2);
  22.    }
  23.  
  24.    public Class getActualType() {
  25.       if (this.type == null) {
  26.          this.type = this.getMethod().getReturnType();
  27.       }
  28.  
  29.       return this.type;
  30.    }
  31.  
  32.    public ArgumentSet getArgumentSet() {
  33.       if (this.argumentSet == null) {
  34.          this.argumentSet = new ArgumentSet(this, this.getMethod().getParameterTypes());
  35.       }
  36.  
  37.       return this.argumentSet;
  38.    }
  39.  
  40.    public MemberModel[] getConciseMembers() {
  41.       if (this.conciseMembers == null) {
  42.          if (this.hasResult()) {
  43.             this.conciseMembers = new MemberModel[1];
  44.             this.conciseMembers[0] = ((ExecutableModel)this).getResultModel();
  45.          } else {
  46.             this.conciseMembers = new MemberModel[0];
  47.          }
  48.       }
  49.  
  50.       return this.conciseMembers;
  51.    }
  52.  
  53.    public Class getDeclaredType() {
  54.       if (this.type == null) {
  55.          this.type = this.getMethod().getReturnType();
  56.       }
  57.  
  58.       return this.type;
  59.    }
  60.  
  61.    public MemberModel getDetailsMember() {
  62.       if (this.detailsMember == null) {
  63.          ArgumentSet var1 = this.getArgumentSet();
  64.          int var2 = var1.getLength();
  65.          switch (var2) {
  66.             case 0:
  67.                this.detailsMember = MemberModel.nullModel;
  68.                break;
  69.             case 1:
  70.                this.detailsMember = var1.getMembers()[0];
  71.                break;
  72.             default:
  73.                this.detailsMember = var1;
  74.          }
  75.       }
  76.  
  77.       return this.detailsMember;
  78.    }
  79.  
  80.    public MemberModel[] getMembers() {
  81.       if (this.members == null) {
  82.          ArgumentSet var1 = this.getArgumentSet();
  83.          boolean var2 = this.hasResult();
  84.          int var4 = var1.getLength();
  85.          MemberModel[] var6 = var1.getMembers();
  86.          int var5 = var4;
  87.          if (var2) {
  88.             var5 = var4 + 1;
  89.          }
  90.  
  91.          this.members = new MemberModel[var5];
  92.  
  93.          for(int var3 = 0; var3 < var4; ++var3) {
  94.             this.members[var3] = var6[var3];
  95.          }
  96.  
  97.          if (var2) {
  98.             this.members[var5 - 1] = ((ExecutableModel)this).getResultModel();
  99.          }
  100.       }
  101.  
  102.       return this.members;
  103.    }
  104.  
  105.    protected Method getMethod() {
  106.       return this.method;
  107.    }
  108.  
  109.    private Object getTarget() {
  110.       return ((MemberModel)this).getOwner() == null ? null : ((MemberModel)this).getOwner().getObject();
  111.    }
  112.  
  113.    protected boolean hasResult() {
  114.       return ((MemberModel)this).getType() != Void.TYPE;
  115.    }
  116.  
  117.    private void initializeMethod(Method var1) {
  118.       this.method = var1;
  119.       ((MemberModel)this).initializeName(MemberUtils.getShortNameFor(this.getMethod()));
  120.    }
  121.  
  122.    public void invoke() throws Throwable {
  123.       Method var1 = this.getMethod();
  124.       Object var2 = this.getTarget();
  125.       Object[] var3 = this.getArgumentSet().getArgs();
  126.       Object var4 = null;
  127.       var4 = var1.invoke(var2, var3);
  128.       ((ExecutableModel)this).setResult(var4);
  129.    }
  130.  
  131.    public boolean isCurrentlyInvokable() {
  132.       return this.getTarget() != null || Modifier.isStatic(this.getMethod().getModifiers());
  133.    }
  134.  
  135.    public void resetMembers() {
  136.       this.members = null;
  137.       this.conciseMembers = null;
  138.       this.detailsMember = null;
  139.    }
  140. }
  141.